<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
  <meta name="generator" content=
  "HTML Tidy for Linux/x86 (vers 1 September 2005), see www.w3.org">

  <title>C++ String Streams</title>
  <link href="../cppreference.css" rel="stylesheet" type="text/css">
</head>

<body>
<table>
  <tr>
  <td>
  <div class="body-content">

  <div class="header-box">
    <a href="../index.html">cppreference.com</a> &gt; <a href=
    "index.html">C++ String Streams</a>
  </div>

  <div class="name-format">
    String Stream Constructors
  </div>

  <div class="syntax-name-format">
    Syntax:
  </div>
  <pre class="syntax-box">
  #include &lt;sstream&gt;
  stringstream()
  stringstream( openmode mode )
  stringstream( string s, openmode mode )
  ostringstream()
  ostringstream( openmode mode )
  ostringstream( string s, openmode mode )
  istringstream()
  istringstream( openmode mode )
  istringstream( string s, openmode mode )
</pre>

  <p>The stringstream, ostringstream, and istringstream objects are
  used for input and output to a string.  They behave in a manner
  similar to fstream, ofstream and ifstream objects.</p>

  <p>The optional <em>mode</em> parameter defines how the file is to
  be opened, according to the <a href="../io_flags.html#mode_flags">io
  stream mode flags</a>.<p>

  <p>An ostringstream object can be used to write to a string.  This
  is similar to the C <a
  href="../stdio/sprintf.html">sprintf()</a>
  function.  For example:</p>

  <pre class="example-code">
  ostringstream s1;
  int i = 22;
  s1 &lt;&lt; "Hello " &lt;&lt; i &lt;&lt; endl;
  string s2 = s1.str();
  cout &lt;&lt; s2;
</pre>

  <p>An istringstream object can be used to read from a string.  This
  is similar to the C <a
  href="../stdio/sscanf.html">sscanf()</a>
  function.  For example:</p>

  <pre class="example-code">
  istringstream stream1;
  string string1 = "25";
  stream1.str(string1);
  int i;
  stream1 &gt;&gt; i;
  cout &lt;&lt; i &lt;&lt; endl;  // displays 25
</pre>

  <p>You can also specify the input string in the istringstream
  constructor as in this example:</p>

  <pre class="example-code">
  string string1 = "25";
  istringstream stream1(string1);
  int i;
  stream1 &gt;&gt; i;
  cout &lt;&lt; i &lt;&lt; endl;  // displays 25
</pre>

  <p>A stringstream object can be used for both input and output to a
  string like an fstream object.</p>

  <div class="related-name-format">
    Related topics:
  </div>

  <div class="related-content">
    <a href="../cppio/index.html">C++ I/O Streams</a><br>
  </div>
  </div>
  </td>
  


  </tr>
  </table>
</body></html>
<hr>

  <div class="name-format">
    String Stream Operators
  </div>

  <div class="syntax-name-format">
    Syntax:
  </div>
  <pre class="syntax-box">
  #include &lt;sstream&gt;
  operator&lt;&lt;
  operator&gt;&gt;
</pre>

  <p>Like <a href="../cppio/index.html">C++
  I/O Streams</a>, the simplest way to use string streams is to take
  advantage of the overloaded &lt;&lt; and &gt;&gt; operators.</p>

  <p>The &lt;&lt; operator inserts data into the stream.  For
  example:</p>

  <pre class="example-code">
  stream1 << "hello" << i;
</pre>

  <p>This example inserts the string "hello" and the variable <i>i</i>
  into <i>stream1</i>.  In contrast, the &gt;&gt; operator extracts
  data out of a string stream:</p>

  <pre class="example-code">
  stream1 >> i;
</pre>

  <p>This code reads a value from <i>stream1</i> and assigns the
  variable <i>i</i> that value.</p>

  <div class="related-name-format">
    Related topics:
  </div>

  <div class="related-content">
    <a href="../cppio/index.html">C++ I/O Streams</a><br>
  </div>
  </div>
  </td>
  


  </tr>
  </table>
</body></html>
<hr>

  <div class="name-format">
    rdbuf
  </div>

  <div class="syntax-name-format">
    Syntax:
  </div>
  <pre class="syntax-box">
  #include &lt;sstream&gt;
  stringbuf* rdbuf();
</pre>

  <p>The <em>rdbuf()</em> function returns a pointer to the string
  buffer for the current string stream.</p>

  <div class="related-name-format">
    Related topics:
  </div>

  <div class="related-content">
    <a href="str.html">str()</a><br>
    <a href="../cppio/index.html">C++ I/O Streams</a><br>
  </div>
  </div>
  </td>
  


  </tr>
  </table>
</body></html>
<hr>

  <div class="name-format">
    str
  </div>

  <div class="syntax-name-format">
    Syntax:
  </div>
  <pre class="syntax-box">
  #include &lt;sstream&gt;
  void str( string s );
  string str();
</pre>

  <p>The function <em>str()</em> can be used in two ways.  First, it can
  be used to get a copy of the string that is being manipulated by the
  current stream string.  This is most useful with output strings.
  For example:</p>

  <pre class="example-code">
  ostringstream stream1;
  stream1 &lt;&lt; "Testing!" &lt;&lt; endl;
  cout &lt;&lt; stream1.str();
</pre>

  <p>Second, <em>str()</em> can be used to copy a string into the
  stream.  This is most useful with input strings.  For example:</p>

  <pre class="example-code">
  istringstream stream1;
  string string1 = "25";
  stream1.str(string1);
</pre>

  <p><em>str()</em>, along with <em>clear()</em>, is also handy when
  you need to clear the stream so that it can be reused:</p>

  <pre class="example-code">
  istringstream stream1;
  float num;

  // use it once
  string string1 = "25 1 3.235\n1111111\n222222";
  stream1.str(string1);
  while( stream1 &gt;&gt; num ) cout &lt;&lt; "num: " &lt;&lt; num &lt;&lt; endl;  // displays numbers, one per line

  // use the same string stream again with clear() and str()
  string string2 = "1 2 3 4 5  6 7 8 9 10";
  stream1.clear();
  stream1.str(string2);

  while( stream1 &gt;&gt; num ) cout &lt;&lt; "num: " &lt;&lt; num &lt;&lt; endl;  // displays numbers, one per line
</pre>

  <div class="related-name-format">
    Related topics:
  </div>

  <div class="related-content">
    <a href="rdbuf.html">rdbuf()</a><br>
    <a href="../cppio/index.html">C++ I/O Streams</a><br>
  </div>
  </div>
  </td>
  


  </tr>
  </table>
</body></html>
<hr>
</body></html>
